import types from '../types'
import axios from 'axios'
// state中定义变量 通过state来存放状态
const state = {
  seller: {},
  detallShow: false
}
// getters相当于vue中的计算属性，通过getters进步一步处理，得到我们想要的值，而且允许传参，第一个参数就是state
const getters = {
  seller (state) {
    return state.seller
  },
  detallShow (state) {
    return state.detallShow
  }
}
// 类似于vue中的methods
// mutations需要commit来调用其里面的方法，它也可以传入参数，第一个参数state，第二参数载荷 也就是额外的参数
// 调用的时候第二参数最好最好写成对象形式 这样我们就可以传递更多信息
const mutations = {
  [types.GET_SELLER] (state, data) {
    state.seller = data
  },
  [types.SHOW_DETALL] (state) {
    state.detallShow = true
  },
  [types.HIDE_DETALL] (state) {
    state.detallShow = false
  }
}
// actions 不要直接去操作state，去操作mutations
// actions包含异步操作 类似于axios请求
// actions的方法默认是异步的 返回promise
const actions = {
  getSeller ({commit, state}) {
    axios.get('/api/seller').then(resp => {
      // eslint-disable-next-line eqeqeq
      if (resp.data.errno == 0) {
        commit(types.GET_SELLER, resp.data.data)
        console.log(resp)
      }
    })
  },
  showDetall ({commit}) {
    commit(types.SHOW_DETALL)
  },
  hideDetall ({commit}) {
    commit(types.HIDE_DETALL)
  }
}
export default {
  state,
  getters,
  mutations,
  actions
}
